=x= 🌵 Home 前台頁面 - 輪播圖後端功能製作。
📌 Home 頁面 - 遊艇型號輪播圖內容 :
<head>
及<body>
內的內容分別複製到 .aspx 檔案中。<div>
原始設定為不顯示。protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) {
loadBanner();
}
}
private void loadBanner()
{
//用 List<T> 接收 Json 格式圖片資料
List<ImagePath> savePathList = new List<ImagePath>();
//連線資料庫取出圖片資料
SqlConnection connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["TayanaYachtConnectionString"].ConnectionString);
string sqlLoad = "SELECT * FROM Yachts ORDER BY id DESC";
SqlCommand command = new SqlCommand(sqlLoad, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
StringBuilder bannerHtml = new StringBuilder();
while (reader.Read()) {
string loadJson = HttpUtility.HtmlDecode(reader["bannerImgPathJSON"].ToString());
savePathList = JsonConvert.DeserializeObject<List<ImagePath>>(loadJson);
//每個型號只取出第一張圖
string imgNameStr = "";
if (savePathList?.Count > 0) {
// 指定選取 List<T> 第一筆資料
imgNameStr = savePathList[0].SavePath;
}
//遊艇型號字串用空格切割區分文字及數字
string[] modelArr = reader["yachtModel"].ToString().Split(' ');
//依新設計或新建造來切換顯示標籤
string isNewDesignStr = reader["isNewDesign"].ToString();
string isNewBuildingStr = reader["isNewBuilding"].ToString();
string newTagStr = ""; //標籤檔名用
// value 預設為 0 不顯示標籤
string displayNewStr = "0";
//判斷是否顯示對應標籤
if (isNewDesignStr.Equals("True")) {
displayNewStr = "1";
newTagStr = "images/new02.png";
}
else if (isNewBuildingStr.Equals("True")) {
displayNewStr = "1";
newTagStr = "images/new01.png";
}
//加入遊艇型號輪播圖 HTML
bannerHtml.Append($"<li class='info' style='border-radius: 5px;height: 424px;width: 978px;'><a href='' target='_blank'><img src='upload/Images/{imgNameStr}' style='width: 978px;height: 424px;border-radius: 5px;'/></a><div class='wordtitle'>{modelArr[0]} <span>{modelArr[1]}</span><br /><p>SPECIFICATION SHEET</p></div><div class='new' style='display: none;overflow: hidden;border-radius:10px;'><img src='{newTagStr}' alt='new' /></div><input type='hidden' value='{displayNewStr}' /></li>");
}
connection.Close();
//渲染畫面
LitBanner.Text = bannerHtml.ToString();
LitBannerNum.Text = bannerHtml.ToString(); //不顯示但影響輪播圖片數量計算
}
//輪播圖 JSON 資料
public class ImagePath
{
public string SavePath { get; set; }
}
savePathList[0].SavePath
指定選取 List<T>
第一筆資料。📢 今天的內容最容易卡住的地方就是要看懂輪播圖的運作邏輯,需要特別去看放在 <head>
裡的 JavaScript 來推測,在製作時最容易鬼打牆的地方,就是明明設定為不顯示的輪播圖縮圖,卻是用來計算輪播圖片總數的內容,如果一開始就把這個區塊刪掉,就會一直卡在為何都有顯示畫面,後端取資料也都有取到,但輪播圖不會動;或是沒有刪除縮圖區塊,就會發現輪播圖會動,但輪播的圖片永遠只有5張,回頭去看 JavaScript 的控制輪播區塊的程式碼,就會發現判斷次數是用縮圖區塊的 '.title ul li.on'
,可以知道是用 <li>
標籤有幾組來決定輪播的次數。